package com.lagou.component.encoder;

import com.alibaba.fastjson.JSON;
import com.lagou.protocol.RpcRequest;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;

public class RpcRequestJsonEncoder extends MessageToByteEncoder<RpcRequest> {

    @Override
    protected void encode(ChannelHandlerContext ctx, RpcRequest rpcRequest, ByteBuf out) throws Exception {
        // 使用 JSON 将 RpcRequest 转换为字节数组
        byte[] body = JSON.toJSONBytes(rpcRequest);
        
        // int类型，获取本次消息的长度
        int dataLength = body.length;

        // 先写入消息头，即本次消息的长度
        out.writeInt(dataLength);
        
        // 在写入消息体
        out.writeBytes(body);
    }

}
